home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 22
/
Cream of the Crop 22.iso
/
os2
/
ext2_200.zip
/
EXT2-OS2.INF
(
.txt
)
< prev
next >
Wrap
OS/2 Help File
|
1996-09-23
|
90KB
|
2,306 lines
ΓòÉΓòÉΓòÉ 1. Introduction ΓòÉΓòÉΓòÉ
ext2-os2 is a file system driver that allows OS/2 to seamlessly access Linux
native partitions (ext2fs partitions) in both read and write modes. Once
installed, Linux partitions appear as standard OS/2 drive letters.
My initial purpose was to get limited read only access to ext2fs partitions
from my OS/2 system, so at the beginning (version 0.1 alpha back in June 1995),
it was more a quick and dirty rewrite than a clean and full port of the Linux
ext2fs file system kernel code.
I've improved it to reuse as much original ext2fs code as possible in order to
get an almost full featured ext2fs driver on OS/2. I wrote a kind of IFS to
VFS translation layer, and ported some Linux kernel services in order to
minimize the changes required into the ext2fs sources. Now that ext2-os2 is 32
bits, these changes are minimal.
This version is almost full featured : the main restriction is that ext2-os2
does not support extended attributes (EAS). (NOTE, to boot OS/2 from a Linux
partition the 16 bits version of ext2-os2 is required. This will be corrected
in the future).
Before using ext2-os2, please read the following : "***** IMPORTANT WARNING -
READ THIS FIRST *****"
Writing an IFS is not a simple thing, for several reasons : first there's only
one IBM document on the IFS interface, and IBM provides it 'AS IS' ... it means
lots of guess ! The second one is that the IFS interface is complex (lots of
stuff to support, EAS ...) and still 16 bits. For instance making the
Workplace Shell survive to my IFS was a headache... The third one is that the
OS/2 IFS interface is quite different from the Linux VFS interface : I had to
rewrite from scratch several Linux VFS or even kernel services. The fourth
thing is the fact that OS/2 is a multithreaded OS : you can be reentered for
the SAME open file instance in your IFS, so locking of resources must be more
strict than under Linux, not even speaking of OS/2 SMP, which is really not
supported.
DISCLAIMER :
THE FACT THAT I WORK FOR IBM HAS NOTHING TO DO WITH THIS DRIVER. I'M WRITING
IT AT HOME, DURING MY SPARE TIME, FOR MY OWN PURPOSES, ON MY OWN MACHINE,
WITHOUT ANY IBM MEANS. I USED ONLY IBM PUBLISHED DOCUMENTS TO WRITE IT : I AM
ABSOLUTELY NOT RELATED TO THE OS/2 DEVELOPMENT TEAM AND THUS I HAVE ABSOLUTELY
NO ACCESS TO ANY CONFIDENTIAL OS/2 IFS RELATED INFORMATION.
Anyway I hope you'll enjoy trying this driver, and even if I don't have much
time, I'll try to keep improving it. I wait for your feedback on this version
: comments, ideas, bug reports and contributions are welcome. Success stories
do also interest me !
Matthieu WILLM
willm@ibm.net Home
mwillm@vnet.ibm.com Work
Note: English is not my native language ... so this document isn't certainly
perfect.
ΓòÉΓòÉΓòÉ 2. Copyright information ΓòÉΓòÉΓòÉ
Copyright notice for the ext2fs IFS driver
Copyright notice for the ext2fs partition filter
ΓòÉΓòÉΓòÉ 2.1. Copyright notice for the ext2fs IFS driver ΓòÉΓòÉΓòÉ
Linux ext2fs file system driver for OS/2 2.x and WARP - Allows OS/2 to
access your Linux ext2fs partitions as normal drive letters.
Copyright (C) 1995, 1996 Matthieu WILLM
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
This driver contains some copyrighted code whose owners are :
Linus Torvalds, the author of the Linux kernel
Remy Card, the main author of the Linux ext2fs file system, and all
contributors to Linux ext2fs
Werner Almesberger, the author of the Linux FAT file system
Jean Loup Gailly, the author of gzip
...probably many other contributors to the Linux kernel.
ΓòÉΓòÉΓòÉ 2.2. Copyright notice for the ext2fs partition filter ΓòÉΓòÉΓòÉ
/************************************************************************/
/* Linux partition filter. */
/* (C) Copyright Deon van der Westhuysen, July 1995. */
/* */
/* Dedicated to Jesus Christ, my Lord and Saviour. */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2, or (at your option) */
/* any later version. */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program; if not, write to the Free Software */
/* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* */
/* This code is still under development; expect some rough edges. */
/* */
/************************************************************************/
ΓòÉΓòÉΓòÉ 3. ***** IMPORTANT WARNING - READ THIS FIRST ***** ΓòÉΓòÉΓòÉ
ext2-os2 is a FILE SYSTEM DRIVER. Being a driver it runs at the most privileged
level of the OS/2 operating system, known as "kernel mode". IN KERNEL MODE
THERE IS NO MORE CRASH PROTECTION. It means that if a bug occurs in the driver
IT CAN CAUSE A HANG OR A SYSTEM HALT, AND THUS CAN CAUSE LOSS OF DATA.
I STRONGLY SUGGEST YOU TO MAKE A BACKUP OF ALL YOUR DATA (EVEN IF THEY
ARE NOT LOCATED ON A LINUX PARTITION) PRIOR TO USE THIS DRIVER.
DON'T USE THIS DRIVER ON A PRODUCTION MACHINE, OR IF YOU MANIPULATE
CRITICAL DATA.
USE IT AT YOUR OWN RISKS, AND ONLY ON A MACHINE YOU ACCEPT TO CRASH AND
REINSTALL.
BE AWARE THAT THIS DRIVER WILL GIVE FULL UNRESTRICTED (ROOT) ACCESS TO
ALL YOUR EXT2FS PARTITIONS FROM OS/2.
ΓòÉΓòÉΓòÉ 4. Installation instructions ΓòÉΓòÉΓòÉ
This chapter describes the installation and setup instructions
Step 1 - Things to do BEFORE installing ext2-os2
Step 2 - Make OS/2 see your Linux ext2fs partitions
Step 3 - Copying the files to your hard drive
Step 4 - Using the ext2-os2 monitoring tool
Step 5 - Specifying command line parameters
ΓòÉΓòÉΓòÉ 4.1. Step 1 - Things to do BEFORE installing ext2-os2 ΓòÉΓòÉΓòÉ
Here are things you must do before installing this version of ext2-os2 :
1. Please run e2fsck from Linux on ALL your ext2fs partitions BEFORE
installing ext2-os2. (You might have to boot Linux from floppy to do
this, especially to run e2fsck on your root partition).
2. I STRONGLY suggest you to first backup any data you don't want to loose
BEFORE trying this driver.
3. Make a backup copy of your CONFIG.SYS
4. Have the two OS/2 kicker diskettes handy , with a full screen editor, so
that you can restore your CONFIG.SYS if the system crashed at boot time.
(This is not needed with WARP : Alt+F1 C at boot time will do the trick)
5. Prepare a Linux boot diskette, with e2fsck on it.
6. If you installed a previous version of ext2-os2, then comment out the
following CONFIG.SYS statements and reboot your system to ensure that no
ext2-os2 file is locked while installing the new version.
IFS = <path>\ext2-os2.ifs <parms>
RUN = <path>\ext2_lw.exe
BASEDEV = ext2flt.flt <parms>
ΓòÉΓòÉΓòÉ 4.2. Step 2 - Make OS/2 see your Linux ext2fs partitions ΓòÉΓòÉΓòÉ
This chapter describes how to make OS/2 see your Linux ext2fs partitions
ΓòÉΓòÉΓòÉ 4.2.1. Understanding how does OS/2 assign drive letters ΓòÉΓòÉΓòÉ
OS2DASD.DMD is the block device managing fixed partitionnable disks and
floppies. It is always (as far as I know) the first block device loaded by the
system. It first scans every .add drivers for physical disks. Then it reads the
partition table of each disk. It first looks for active primary OS/2 partitions
(Types 01, 04, 06 and 07) and installs a block device for each of them It
repeats this for each physical drive in the system. Then it looks for extended
volumes on the first physical drive (type 05 partition), reads the extended
boot record, looks for an OS/2 partition and assign it a drive letter, looks
for another extended volume ... and so on until no more extended volume is
found on the first disk. It them repeats this for each physical drive.
Example :
Γûá Scans all *.add driver for fixed disks - found 2
Γûá Reads the MBR of physical disk 1
Γûá Found an OS/2 type 7 partition (active primary OS/2 IFS) - Install a block device (C:)
Γûá Found an unknown type 0x83 partition - skip it
Γûá Found an OS/2 type 5 partition (extended volume) - skip it
Γûá No more primary partition
Γûá Reads the MBR of physical disk 2
Γûá Found an OS/2 type 7 partition - Install a block device (D:)
Γûá Found an unknown type 17 (inactive primary OS/2 IFS) - skip it
Γûá Found an OS/2 type 5 partition (extended vol) - skip it
Γûá No more primary partition
Now done for primary partitions - processing extended volumes
Γûá Reread the MBR of physical disk 1
Γûá Found an OS/2 type 5 partition (extended volume)
Γûá Reads the extended boot record of the extended volume
Γûá Found a OS/2 type 7 partition - Install a block device (E:)
Γûá Found an OS/2 type 5 partition
Γûá Reads the extended boot record
Γûá Found a OS/2 type 7 partition - Install a block device (F:)
Γûá No more partition
Γûá Reread the MBR of physical disk 2
Γûá Found an OS/2 type 5 partition (extended volume)
Γûá Reads the extended boot record of the extended volume
Γûá Found a OS/2 type 7 partition - Install a block device (G:)
Γûá No more partition
Make OS/2 see your Linux ext2fs partitions
ΓòÉΓòÉΓòÉ 4.2.2. Make OS/2 see your Linux ext2fs partitions. ΓòÉΓòÉΓòÉ
During "normal" operations, OS/2 will not assign a drive letter to the Linux
partitions, because their type (0x83) is not one of the types OS/2 normally
recognize. An installable file system driver does not have any control on how
block devices are assigned : this is a device driver issue. If we don't do
anything, the ext2fs IFS won't be very useful, since OS/2 doesn't even call it
(no block device allocated).
In order for OS/2 to see your ext2fs partition, you must either change your
Linux ext2fs partition ID from 0x83 (Linux native) to 0x7 (OS/2 IFS - and not
OS/2 HPFS as stated in the Linux fdisk documentation), or make OS/2 think type
0x83 partitions are type 0x7 partitions.
In the first case we must manually alter the partition table, and in the second
case we must use a special filter device driver - ext2flt.flt - whose purpose
is to show a "hacked" partition table to OS2DASD.DMD.
Here's how ext2flt.flt works : A virtual fixed disk is created for each
partition under control of the driver. These virtual fixed disks each contain
one extended partition with a logical drive in it. Since OS2DASD.DMD that
controls fixed disks first assigns drive letters to primary partitions the
virtual partitions are tacked on at the end of allocated drive letters. (To
control the mounting order of all partitions OS2DASD is prevented from directly
accessing the fixed disks and the filter presents it with an alternate list of
partitions.)
BE CAREFUL : IF YOU DECIDE TO CHANGE PARTITION ID MANUALLY BE AWARE THAT IT CAN
CHANGE YOUR DRIVE LETTERS AND MAKE OS/2 UNBOOTABLE !!
Examples being better than a long speach, let's look at some different
situations :
Example 1
Example 2
Example 3
ΓòÉΓòÉΓòÉ 4.3. Step 3 - Copying the files to your hard drive ΓòÉΓòÉΓòÉ
Installation using the "Device Driver Install" object
Manual installation
ΓòÉΓòÉΓòÉ 4.3.1. Installation using the "Device Driver Install" object ΓòÉΓòÉΓòÉ
1. Open the "OS/2 System" folder
2. Open the "System Setup" folder
3. Open the "Device Driver Install" object
a. Type in the "source directory" entry field the path where you
decompacted the files
b. Type in the "target directory" your OS/2 boot drive
c. Click on the "Install..." push button
d. Select the drivers to install (select both of them) :
"Linux ext2fs file system driver (IFS) version 2.0 for OS/2"
"ext2flt - Filter to make Linux partitions visable to OS/2."
e. Click on OK
4. Add <boot drive>:\OS2\FS\EXT2 to the PATH and LIBPATH statements in your
CONFIG.SYS
5. Set and/or change command line parameters for ext2-os2.ifs and
ext2flt.flt.
6. Reboot your computer
ΓòÉΓòÉΓòÉ 4.3.2. Manual installation ΓòÉΓòÉΓòÉ
ext2flt installation
1. copy ext2flt.flt and ext2flt.sym in <boot drive>\OS2 or in <boot
drive>\OS2\BOOT (WARP only)
2. add the following line in CONFIG.SYS
BASEDEV=EXT2FLT.FLT
3. if necessary, adjust ext2flt command line parameters (for instance /W if
you want write access)
ext2-os2 installation
1. copy mwdd32.sys and mwdd32.sym in <boot drive>\OS2 or in <boot
drive>\OS2\BOOT (WARP only)
2. add the following line in CONFIG.SYS
BASEDEV=MWDD32.SYS
3. make a directory to hold ext2-os2 files somewhere but NOT on a Linux
partition.
4. add this directory at the end of the PATH and LIBPATH statements in
CONFIG.SYS
5. copy the following files to that directory :
ext2-os2.ifs
ext2-os2.exe
sync.exe
ext2_lw.exe
ext2-os2.inf
ext2-os2.htm
ext2-os2.sym
ext2-os2.ddp
vfsapi.dll
vfsapi.lib
uext2.dll
6. add the following lines in your CONFIG.SYS
IFS=<path>\ext2-os2.ifs -cache:256 -errors=panic
RUN=<path>\ext2_lw.exe
7. if necessary, adjust ext2-os2.ifs command line parameters (for instance
-rw if you want write access)
Note: In CONFIG.SYS, ext2-os2.ifs MUST be located AFTER the IFS managing the
boot drive (HPFS.IFS usually). ext2-os2.ifs can appear at the head of
CONFIG.SYS only if you boot OS/2 from a Linux partition.
ΓòÉΓòÉΓòÉ 4.4. Step 4 - Using the ext2-os2 monitoring tool ΓòÉΓòÉΓòÉ
ext2-os2.exe is a monitoring tool to retrieve data from ext2-os2.ifs. It is a
PM notebook containing :
page 1 : disk cache information
page 2 : I-node and open file information
page 3 : ext2-os2.ifs standard output
ΓòÉΓòÉΓòÉ 4.5. Step 5 - Specifying command line parameters ΓòÉΓòÉΓòÉ
ext2-os2.ifs command line in CONFIG.SYS :
IFS = <drive>:<path>\ext2-os2.ifs [-q]
[-cache:<max. disk cache size>]
[-rw]
[-no_auto_fsck]
[-case_retensive]
[-<IFS entry point to trace>]
[-no_strat2]
[-errors=[panic|continue]]
[-output=[com1|com2]]
[-tz:<time zone in minutes from UTC>]
NOTE : case is not significant (-q and -Q are equivalent), and '-' as well as
'/' can be used as a command line switch on the ext2-os2.ifs command line.
ext2flt.flt command line in CONFIG.SYS :
BASEDEV = EXT2FLT.FLT [/Q]
[/V]
[/W]
[/A]
[/M <mount list>]
ΓòÉΓòÉΓòÉ 5. Usage instructions ΓòÉΓòÉΓòÉ
This chapter describes some imortant usage instructions.
1. Lazy writes considerations
2. Automatic check disk
3. Fatal ext2-os2 errors
4. Case sensitivity considerations
5. Note to "System Commander" Users
6. Dynamic disk cache considerations
7. Time zone considerations
ΓòÉΓòÉΓòÉ 5.1. Lazy writes considerations ΓòÉΓòÉΓòÉ
This release uses only lazy writes : it means that data are not committed to
the disk immediately. YOU *MUST ALWAYS* SHUTDOWN YOUR SYSTEM PROPERLY so that
data can be written to disk. IF YOU DON'T FOLLOW THIS RULE, YOUR EXT2FS
PARTITION WILL BE PROBABLY DAMAGED, AND YOUR DATA LOST.
I included a sync.exe utility that flushes the cache to disk if you need to be
sure that data are committed without shutting down the system.
If you use ex2fs formatted removable media (floppy, ...) data should be
commited to disk before the media is removed. You MUST run sync.exe BEFORE
removing the media from its drive.
There is an automatic flush during system shutdown. At that time the removable
media (if you used one) MUST be present in the drive.
Note: You'll notice that the shutdown process is slightly longer : this is
absolutely normal.
ΓòÉΓòÉΓòÉ 5.2. Automatic check disk ΓòÉΓòÉΓòÉ
When ext2-os2 mounts an ext2fs partition and when read writes are enabled, it
will set the mount count in the superblock to its maximum value in order to
force a disk check when Linux mounts the drive.
This is a safety precaution to ensure that ext2-os2.ifs didn't corrupt the file
systems. I do NOT recommend to disable this automatic check ; I only included
the -no_auto_fsck switch for those who have very large drives.
ΓòÉΓòÉΓòÉ 5.3. Fatal ext2-os2 errors ΓòÉΓòÉΓòÉ
ext2-os2 fatal errors can appear in several forms :
1. A system halt with a register dump : this is a fatal exception trapped by
the OS/2 kernel, due for example to a NULL pointer assignment. In this
case the kernel debugger or a system dump is needed to track down the
problem.
2. A system halt with a message like ">>>>>>> EXT2-OS2 FATAL ERROR <<<<<<<".
This is a system halt initiated by ext2-os2.ifs due to an unexpected
error. Normally there should be a few lines with a cryptic message.
Please write it down, as it will tell me where the error occured.
3. The whole system is frozen : it is probably because an infinite loop was
entered. Here also the kernel debugger is the only solution.
4. One or more applications are frozen : it is probably a deadlock.
In either case, your ext2fs partition is in great danger ; To minimize the
risk of data loss, please do the following :
1. In case of a system halt, write down the error message.
2. In case of a system hang, try to press CTRL+ALT+DEL : this will commit
dirty buffers to disk and thus minimise the damages on the partitions
(ext2fs as well as FAT or HPFS). If it didn't work, the big red button is
the only solution.
3. Reboot Linux and run e2fsck ON ALL YOUR LINUX EXT2FS PARTITIONS to check
and repair them if needed. DO NOT RESTART OS/2 WITH EXT2-OS2.IFS WITHOUT
HAVING RUN E2FSCK ON ALL YOUR PARTITIONS, THIS COULD SPREAD FILE SYSTEM
ERRORS AND MAKE THINGS EVEN WORSE !
4. Please e-mail me the error, as well as a test case if possible, and
please join your partition scheme (FDISK /QUERY from OS/2 or fdisk -l
from Linux) and your CONFIG.SYS.
ΓòÉΓòÉΓòÉ 5.4. Case sensitivity considerations ΓòÉΓòÉΓòÉ
ext2fs is a case sensitive file system ; ext2-os2.ifs by default does case
sensitive comparisions, but even if OS/2 supports case sensitive file systems,
all the apps that uppercase or lowercase file names are broken. Some parts of
OS/2 are also broken : for instance the OS/2 program loader itself will
uppercase executable names, and so will fail loading programs or DLL if they
reside in a path with low case components.
As a workaround, I introduced a command line switch (-case_retensive) to make
ext2-os2.ifs behave like HPFS : once set, it will ignore case when comparing
file names, but it will retain the case within the file system. It means that
FILE, File, FiLe and file will be treated as the same file if they reside in
the same directory ; but if you create FiLe, it will keep the case in the file
system.
If you plan to run OS/2 programs from a Linux partition, this option is
necessary because the OS/2 program loader uppercase executable names.
There's a dangerous drawback to this case retensive mode : if 2 files created
from Linux in the same directory exist with the same name but different case
(FILE and File for instance), and you run ext2-os2.ifs in case retensive mode,
RESULTS WILL BE UNPREDICTABLE AND YOU CAN TRASH ONE OR EVEN BOTH FILES ! In
fact only the first entry in the "." file of the parent directory will be used
by ext2-os2.ifs ; This "first" entry is not necessarily the first entry
displayed by the 'DIR' command, nor is it the first one created. EXT2-OS2.IFS
DOES NOTHING TO SOLVE SUCH FILE NAME CONFLICT IN CASE RETENSIVE MODE.
If you want to use this case retensive mode, please make sure from Linux that
there are never several files with the same name but different case in ANY
directory on ANY ext2fs partitions on your system BEFORE trying case retensive
mode. If there are some, then rename these files from Linux so that they have
have different names.
ΓòÉΓòÉΓòÉ 5.5. Note to "System Commander" Users ΓòÉΓòÉΓòÉ
Note that "System Commander" (from V-Communications) may make changes to the
partition table at boot time. This may affect which partitions are visible, or
what drive letters are assigned by OS/2 when booting from System Commander. In
particular, by default System Commander will make primary partitions on the
second hard drive invisible to OS/2. If one of these other primary paritions
contains a Linux partition, it will not be visible to OS/2 or EXT2-FS, (even
though you are using the /V /A /M options with EXT2FLT.FLT). To make a primary
partition on a second hard drive visible when booting OS/2 from System
Commander, do the following:
1. From the main System Commander screen, move to the OS/2 boot selection,
and press Alt-S for the setup screen.
2. Select "Local special options" from the setup screen.
3. Select "YES" for the "Make primary partitions visible on drive 1".
4. That's all
This has been reported by Steve Enns (ennss@eris.nhrc.sk.doe.ca)
ΓòÉΓòÉΓòÉ 5.6. Dynamic disk cache considerations ΓòÉΓòÉΓòÉ
ext2-os2.ifs now has a dynamic disk cache. The disk cache code is in fact a
port of the Linux disk cache, but with a few important differences.
In Linux, the dynamic cache code is coupled to the virtual memory manager code,
so that all free physical memory can be used as cache : when there's some free
physical memory, the cache can grow, and when there's not enough free physical
memory, the virtual memory manager asks the disk cache to free some pages (this
can range from "Could you please give me some free pages" ... to "I URGENTLY
need some memory so make whatever you can to free some pages"). On OS/2 I
couldn't make things work that way, simply because I can't hack the OS/2 kernel
code !! On OS/2, you MUST specify an upper limit for the amount of physical
memory the disk cache can allocate. When needed, ext2-os2.ifs will allocate
this memory as disk cache, but to simulate VMM calls to shrink the cache, a
daemon (ext2_lw.exe) periodically tries to shrink the cache. While it is not a
perfect solution, it seems to be a good compromise, at least if the max cache
size is reasonable (small enough so that it doesn't cause physical memory
starvation to the kernel).
Some important points :
Disk cache memory is allocated/freed by chunks of 4 Kb (a page).
The disk cache is allocaled in PHYSICAL MEMORY, it means that this memory
CANNOT BE SWAPPED OUT to make room for other needs by the kernel (Having
a swappable disk cache would be stupid IMHO !). It means that the maximun
cache size passed to ext2-os2.ifs command line in CONFIG.SYS (-cache:xxx
option) should be reasonable.
You MUST ALWAYS HAVE EXT2_LW.EXE RUNNING, even in read only mode. If you
kill it or if you suppress the starting of ext2_lw.exe in CONFIG.SYS, the
disk cache size WILL NEVER SHRINK.
You can monitor the disk cache size using ext2-os2.exe.
ΓòÉΓòÉΓòÉ 5.7. Time zone considerations ΓòÉΓòÉΓòÉ
ext2-os2 can now take your local time zone into account. File times should
match Linux file times (local time) instead of being relative to UTC . The time
zone can be set in CONFIG.SYS on the ext2-os2.ifs command line through the -tz
switch . It should be set to the minute shift from UTC (-1440 to +1440). 0
means GMT, 60 means GMT+1, 120 means GMT+2, -60 means GMT-1 and so on.
This option is rather experimental and can't be perfect because OS/2 does not
natively support time zones. Please tell me if you find it useful and if it
works correctly, otherwise simply remove the -tz switch and tell me the
problems you encountered.
Note: The OS/2 system time is not affected by this variable, so when you use
-tz, you make ext2-os2.ifs consistent with Linux, but you introduce a
shift between OS/2 system time, and file times. In some cases this can
be a problem. Please tell me if you encountered some problems due to
this (makefiles ?).
ΓòÉΓòÉΓòÉ 6. Features, limitations and known bugs for this release. ΓòÉΓòÉΓòÉ
1. Features and limitations
2. Known bugs
ΓòÉΓòÉΓòÉ 6.1. Features and limitations ΓòÉΓòÉΓòÉ
I only tested it on Warp, but it should work on OS/2 2.x and above. It
will *NOT* work on OS/2 1.x.
I used the Linux 1.2.1 kernel sources, corresponding to ext2fs 0.5b. It
should work even with ext2fs from latest linux kernels (1.3.97).
Dynamic disk cache size (limited by the physical memory available),
ported from Linux.
Global I-node cache, identical to Linux one.
Global directory entry cache, identical to Linux one.
Uses almost only original Linux ext2fs routines.
Works well only for a block size of 1 KB (it should work with other block
sizes, but it has been minimally tested)
Doesn't support fragments (neither do the original Linux ext2fs 0.5b
code)
Linux special files (fifo, symbolic links, sockets, block and character
devices) are mapped as SYSTEM files : you can see them with DIR /A but
you normally can't read them
OS/2 mounts ext2fs partitions as root : it means that from OS/2 you have
full unrestricted access to your Linux partitions.
Unlike Linux, file names beginning with '.' are not hidden
Hard links are properly handled
Symbolic links are not followed (treated as SYSTEM regular files)
Each ext2 partition has its own drive letter (provided you made them
visible from OS/2)
OS/2 extended attributes are not supported, because Linux ext2fs does not
support them for the moment.
Swapping on a Linux ext2fs partition is supported : it means you can put
SWAPPER.DAT on a Linux partition.
(*note* only in the 16 bits version for the moment) Booting OS/2 from a
Linux ext2fs partition is now supported, but you must still have a FAT or
HPFS partition to store the OS/2 swap file and the desktop tree.
Some OS/2 API are not or partially supported, for instance :
1. DosSetFSInfo : level 2 is ignored because an ext2fs file system
does not define a volume label nor a volume serial number.
2. DosSetFileInfo : level 2 (used to store/change EAS) is ignored
because EAS are not supported by ext2fs.
3. DosSetFileInfo : level 2 (used to store/change EAS) is ignored
because EAS are not supported by ext2fs.
4. DosSetVerify : completely ignored on ext2fs partitions !
ext2fs specific behaviour of some OS/2 API :
1. DosQueryFSInfo with FSIL_ALLOC (level 1) information returns the
free space minus the reserved space. This should be consistent with
Minix style df output (no fs overhead taken into account).
2. DosQueryFSInfo with FSIL_VOLSER (level 2) information returns
EXT2FS_<drive> as volume label and a 32 bits CRC checksum of sector
0 as volume serial number.
A file is considered read only if neither UNIX user, group and other
'write' bits are set.
When a file is set read-write, the UNIX user 'write' bit is set.
When the block device driver supports it, strategy 2 I/O are used on non
removable media. They provide the following advantages :
- Uses asynchronous I/O request lists.
- Priorities can be assigned to I/O.
- Multiple non contiguous I/O requests can be sent to the device
driver in one shot, this permits the the IFS and the device driver
to sort requests for better performance. OS2DASD.DMD, the standard
fixed disk block device driver does support strategy 2 requests.
ΓòÉΓòÉΓòÉ 6.2. Known bugs ΓòÉΓòÉΓòÉ
There are always too many of them. This list is not complete but I'll try to
keep it as much complete as possible and shrink it as fast as I can, if you
give me your feedback...
The mount process will mount the ext2fs partition even if it has not been
unmounted cleanly : I STRONLY SUGGEST YOU TO UNMOUNT YOUR FILE SYSTEMS
CLEANLY FROM LINUX - RUNNING THIS DRIVER ON A CORRUPTED EXT2FS PARTITION
IS LIKELY TO CRASH YOU SYSTEM.
Removable media support has been only minimally tested. You *MUST* run
sync.exe *BEFORE* removing a ext2fs formatted drive
DosFindNext() called from a 32 bits app (aka DosFindFromName) doesn't
restart from the specified name, but from the last directory entry found.
As ext2fs doesn't support EAS, there are many cosmetic bugs with the
workplace shell (some icons stay hatched....)
Error codes returned from the IFS to OS/2 are sometimes not translated
from Linux to OS/2. This will result in messages like "Cannot find
message 56347" instead of "Directory not empty" for instance.
ΓòÉΓòÉΓòÉ 7. History of changes ΓòÉΓòÉΓòÉ
This chapter describes the changes between each release of ext2-os2
1. From 0.1 to 0.2
2. From 0.2 to 0.3
3. From 0.3 to 0.4
4. From 0.4 to 0.5
5. From 0.5 to 0.6
6. From 0.6 to 0.7
7. From 0.7 to 0.8
8. From 0.8 to 0.9
9. From 0.9 to 2.0
ΓòÉΓòÉΓòÉ 7.1. From 0.1 to 0.2 ΓòÉΓòÉΓòÉ
DOS sessions can now access ext2fs partitions. WinOS2 sessions can also,
but they crash randomly and I couldn't figure out why yet !
The per volume disk cache size is now user configurable from 64 Kb to 60
* 64 Kb. However it is not evident that a huge disk cache will improve
performance significantly : the cache lookup algorithm is still primitive
(single LRU list).
Sources are now included
FS_FINDFIRST, FS_FINDNEXT and FS_FINDFROMNAME now use the same lookup
routine
The directory entry cache is now implemented (identical to the Linux one)
readdir() now uses the original ext2_readdir() routine instead of a quick
(and somewhat dirty) rewrite
FS_FSINFO now returns a 'true' volume serial number instead of garbage.
This volume serial number is a CRC checksum of sector 0.
FS_MOUNT now checks for a previous instance of the volume to be mounted,
instead of remounting blindly a previously mounted volume.
FS_MOUNT with MOUNT_RELEASE flag now closes the volume and frees memory
brelse() no longer produces a system halt (trap D) when receiving a NULL
buffer : it now ignores it like its Linux counterpart
Direct access opens (OPEN_FLAGS_DASD) are now supported in both read only
and readwrite modes
Write capabilities added :
- FS_MKDIR and FS_RMDIR implemented
- FS_SHUTDOWN implemented
- FS_OPENCREATE in writeonly and readwrite mode implemented
- FS_WRITE implemented
- FS_DELETE implemented
FS_CLOSE now calls ext2_release_file() when the last instance of a file
is closed
"-cache:<disk cache size>" Command line parameters added to set the per
volume disk cache size
"-q" command line parameter added (quiet initialisation)
"-rw" command line parameter added (write access allowed)
The memory I-node management routines (iput() iget() ...) are now a port
of their Linux counterparts instead of a rewrite.
Linux scheduling and semaphore management routines (sleep_on(), wake_up()
down() up() ...) have been rewritten using ProcBlock/ProcRun device
helpers instead of FSH_SEMxxx : now their behaviour should be identical
to their Linux counterparts.
The mount process is now almost identical as in ext2fs.
When OS/2 mounts a ext2fs partition, it sets the mount count to the
maximum to force Linux to autocheck ext2fs partitions "touched" by OS/2.
Buffer head structures now *NEVER* reach segment boundaries : this avoids
TREMENDOUS problems with some ext2fs routines (ext2_add_entry() ...)
which do some pointer arithmetics which simply don't work in a 16:16
memory model.
ΓòÉΓòÉΓòÉ 7.2. From 0.2 to 0.3 ΓòÉΓòÉΓòÉ
There is now a translation from Linux error codes (those in
linux/errno.h) to OS/2 error codes (bseerr.h). Now for instance, cmd.exe
says "Directory not empty" instead of "Cannot find message 65503". This
translation currently occurs in FS_READ, FS_WRITE, FS_RMDIR , FS_DELETE,
FS_MOVE and FS_MKDIR.
FS_COPY() is now supported (in fact emulated by the OS/2 kernel). It was
just a matter of returning ERROR_CANNOT_COPY from FS_COPY() - this makes
the kernel emulate the copy operation - instead of ERROR_NOT_SUPPORTED.
This applies only to copy operations inside or between ext2fs partitions.
Some cleanup in the code, by removing much direct ext2fs call and
replacing them by Linux VFS style calls (inode->i_op->read() for instance
instead of ext2_file_read()). This would ease te work of people trying to
port other Linux file systems to OS/2.
FS_MOVE is now implemented.
Corrected a bug in FS_DevHelp_ProcBlock : register di was not preserved
across the call, causing some random trap D.
Corrected a bug in read_inode when in DASD mode (OPEN_FLAGS_DASD) : some
I-node fields are now properly initialized ; This was preventing FS_READ
to work on a direct access handle (inode->i_mode was 0 and FS_READ
reported "not a regular file").
Suppressed strict locking of buffers : now buffers can be used more than
once, conforming to Linux buffers (no more mutex in getblk and brelse),
some ext2fs routines do rely on it (ext2_rename) ... ext2-os2 on OS/2
for SMP is not for tomorrow !!
Added -no_auto_fsck command line switch to disable the forced e2fsck when
Linux mounts a partition "touched" by OS/2.
Added code to close remaining open files at shutdown. Normally they
shouldn't be any, but the WPS lets some pending search handles
(DosFindxxx) ; this could result in file system corruption (a search
handle on a directory later deleted for instance : the deletion is not
committed until all references to the directory are closed).
Synchronous files (OPEN_FLAGS_WRITE_THROUGH and OPEN_FLAGS_NO_CACHE)
should be now handled correctly.
ΓòÉΓòÉΓòÉ 7.3. From 0.3 to 0.4 ΓòÉΓòÉΓòÉ
Corrected a bug in FS_MOUNT that caused a system halt (trap D) when
loading the WinOS2 file manager and ext2-os2 not being the last IFS
statement in CONFIG.SYS
Corrected a bug in FS_CLOSE that caused some random file system
corruption : ext2_release_file() was not correctly called.
Now FS_OPENCREATE opens only regular files, as it seems to be the default
OS/2 behaviour. (FS_OPENCREATE no longer opens directories).
Added the -trace option to ext2-os2.exe : ext2d.exe is no longer
necessary.
Now ext2-os2.exe correctly ends conversation with the IFS when being
closed.
ext2flt has been upgraded from V1.2 to V1.2b
During shutdown the flush mechanism could be disturbed if other activity
(lw daemon ...) was taking place (resulting in potential file and/or file
system corruption). This has been corrected.
The famous random trap D at CS:EIP=<any cs>:142e occuring at boot time
should now be corrected ... It was in fact a trap occuring inside the
Microsoft Visual C++ runtime library, only under retail OS/2 kernel (no
trap at all under kernel debugger !). After having taken 5 or 6 system
dumps I realized it was because somewhere an INT 21h call was issued
inside the vsprintf() routine. I changed vsprintf() for the Linux kernel
one.
ΓòÉΓòÉΓòÉ 7.4. From 0.4 to 0.5 ΓòÉΓòÉΓòÉ
Added support for strategy 2 I/O for non removable medias (for block
devices that support it !). This results in huge perfomance improvements
: throughput can be 5 times better than with standard I/O in some
circumstances (large file read/write).
Improved and corrected many bugs concerning time stamping of regular
files (last access date/time and last write date/time should now reflect
the reality !) - Time stamping of directories is yet to be improved.
Corrected a bug in ll_rw_block() that could cause some file/file system
corruption in rare circumstances.
Some cleanup in the source code : removed some inline assembly, improved
init routines ....
Added support for the standard DosFsCtl function 1 call (get extended
error info).
Added a first version of the VFSAPI library : it currently implements the
stat(), fstat() and sync() calls.
DosResetBuffer is now supported (FS_COMMIT entry point).
Disk cache management has been completely rewritten : the disk cache code
is now a port of the Linux buffer management code (dynamic disk cache
size)
ext2-os2.exe is now a PM application, and can now monitor some data from
ext2-os2.ifs.
Changed many FSH_PROBEBUF into VMLock/VMUnlock pairs so that user buffers
passed to the IFS can't be freed by other threads.
Added -case_retensive command line option to make ext2-os2.ifs behave
like HPFS (case is not significant but kept within the file system, for
instance File and FILE are considered to be the same file). This fixes
MANY apps which uppercase file names, but there's a risk of loosing data
if 2 files with the same case exists in the same directory (see usage
information for details).
Added command line switches to trace some IFS entry points (for instance
-FS_MKDIR will trace FS_MKDIR calls). This makes the debug version of
ext2-os2.ifs (ext2d.ifs) no longer necessary.
Deon van der Westhuysen's ext2flt.flt has been updated to version 1.2c in
this package. I recompiled ext2flt.flt with MS Visual C++ simply because
I don't have borland C++, and I needed to temporarily include some
debugging code to solve problems with strategy 2 I/Os (in fact the
problems were in OS2DASD.DMD !). Normally this "MS Visual C++" version
should behave absolutely like the original Borland compiled version. But
in case you prefer using the original version, you can find it on
ftp-os2.nmsu.edu (/os2/diskutil/e2flt12c.zip) or on quark.cs.sun.ac.za
(/pub/ext2flt/e2flt12c.zip). See the file ext2flt/makefile.msc for
details.
File systems greater than 2 Gb should now be mounted correctly.
Many other changes !
ΓòÉΓòÉΓòÉ 7.5. From 0.5 to 0.6 ΓòÉΓòÉΓòÉ
Corrected a bug in FS_NEWSIZE : the I-node wasn't marked dirty after the
size change. This resulted in random truncation failures.
Corrected a bug in FS_OPENCREATE : When creating a new file or replacing
an existing one (OPEN_ACTION_REPLACE_IF_EXISTS or
OPEN_ACTION_CREATE_IF_NEW) the new file size passed to the IFS was
ignored, this resulted in truncation failures.
DosSetFileInfo is now supported for level 1 : it will change the file
dates. Level 2 (used to store or change EAS) is ignored because ext2fs
doesn't support EAS.
DosSetPathInfo is now supported for level 1 : it will change the file
dates. Level 2 (used to store or change EAS) is ignored because ext2fs
doesn't support EAS.
Corrected a *STUPID* bug that caused a system halt at boot time with
message "EXT2-os2 : buffer_init() - Couldn't allocate disk block hash
table" when the max. cache size was not set on the IFS command line. If
not set, the cache size remained uninitialized (0) instead of getting its
default value...hence the system halt when trying to allocate a 0 length
buffer.
Corrected a bug in date_dos2unix ; it made FS_CLOSE write incorrect file
times to disk (file dates were OK).
The time zone is now taken into account by ext2-os2.ifs. This makes
ext2-os2.ifs reflects file time stamps in local time instead of UTC
(ext2-os2.ifs and linux times should now match). The time zone is set in
CONFIG.SYS through the EXT2_TZ environment variable (minutes from UTC).
Trace for the following entry points has been added :
- FS_PATHINFO
- FS_FILEATTRIBUTE
- FS_FILEINFO
- FS_PROCESSNAME
Optimized a little bit the use of iget/iput in FS_DELETE and
FS_OPENCREATE.
Corrected some bugs related to time stamping. ext2-os2.ifs no longer let
the kernel do the time stamping, but does it itself. For instance when
copying a file on an ext2fs file system, the file creation date should
now be the one from the original file.
ext2-os2.exe now traces the use of iput and iget routines.
changed the panic code.
addded the -errors=[panic|cont] command line parameter
Setting or clearing the DOS READONLY attribute is now supported
(FS_FILEATTRIBUTE, FS_FILEINFO and FS_PATHINFO).
ΓòÉΓòÉΓòÉ 7.6. From 0.6 to 0.7 ΓòÉΓòÉΓòÉ
changed the EXT2_TZ valid range from [-720;720] to [-1440;1440] so that
every countries can be supported (New Zeland has a 13 hour shift from UTC
...)
corrected a major bug in sys_bdflush that made the system hang when
ext2_lw.exe was loaded before any Linux partitions are mounted.
corrected a time stamp problem in FS_COMMIT.
ΓòÉΓòÉΓòÉ 7.7. From 0.7 to 0.8 ΓòÉΓòÉΓòÉ
corrected a bug that prevented negative values to be specified for the
EXT2_TZ environment variable.
corrected a bug in FS_OPENCREATE that caused a truncation failure when
OPEN_ACTION_REPLACE_IF_EXISTS was set and a non zero file size was
passed.
corrected a problem in bdflush() that made IOSTONE giving ridiculously
small results. After that IOSTONE results on my antic IDE disk jumped
from 80 (no it's not a typo!) to 2500.
changed a compiler option : now only externally called routines load DS
on entry. This allows better optimization.
now DGROUP is compeletely fixed in memory (instead of only
EXT2_FIXED_DATA), because I discovered that the compiler sometimes makes
references to some internal data in CONST segment (it seems to create
selector aliases for optimization I think). This could cause a trap E in
routines called in interrupt context if CONST was swapped out. I
simplified DevHelp bindings in devhelp2.asm accordingly.
added debug output to COM ports (COM1 or COM2).
added boot capability to ext2-os2 (wrote a micro FSD and a mini FSD).
ΓòÉΓòÉΓòÉ 7.8. From 0.8 to 0.9 ΓòÉΓòÉΓòÉ
corrected a bug in the file table management code. I incorrectly assumed
that FSH_SEGALLOC returned zeroed memory and this could cause a system
halt in put_last_in_list saying the used list was corrupted.
corrected a race condition problem in the file table management code.
ΓòÉΓòÉΓòÉ 7.9. From 0.9 to 2.0 ΓòÉΓòÉΓòÉ
Corrected yet another bug in FS_NEWSIZE
Corrected (I hope) a bug that could make ext2-os2 crash when
HPOFS.IFS/MO.SYS are present.
Implemented swapper entry points : now SWAPPER.DAT can be put on a Linux
ext2fs partition.
Rewrote the mount/unmount/shutdown mechanism (including superblock
allocation).
Ported the whole ext2-os2.ifs to 32 bits. (this introduced many small
changes).
ΓòÉΓòÉΓòÉ 8. How to build ext2-os2.ifs ΓòÉΓòÉΓòÉ
This chapter describes how to build the IFS.
1. Tools needed
2. The build tree - How to build
ΓòÉΓòÉΓòÉ 8.1. Tools needed ΓòÉΓòÉΓòÉ
Table or required compiler, assembler and linker :
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé Γöé32 bits C Γöé16 bits C Γöé80x86 ΓöéLinker Γöé
Γöé Γöécompiler Γöécompiler Γöéassembler Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéext2-os2.ifs Γöé(1) Γöé(none) Γöé(2) Γöé(7) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöémwdd32.sys Γöé(1) Γöé(none) Γöé(2) Γöé(7) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéext2flt.flt Γöé(none) Γöé(3) or (4)Γöé(5) or (6)Γöé(8) or (9)Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöévfsapi.dll Γöé(1) Γöé(none) Γöé(none) Γöé(7) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéext2-os2.exe Γöé(1) Γöé(none) Γöé(none) Γöé(7) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéext2_lw.exe Γöé(1) Γöé(none) Γöé(none) Γöé(7) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöésync.exe Γöé(1) Γöé(none) Γöé(none) Γöé(7) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéuext2.dll Γöé(1) Γöé(none) Γöé(none) Γöé(7) Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
List of required toolkits :
The IBM OS/2 WARP developer's toolkit (included in IBM Visualage C++
package)
The IBM OS/2 Developer Connection Device Driver Kit version 2 or later
The IBM 'IFS toolkit'. I don't know the exact status of this package ; it
seems to be publically available (I've seen it on Hobbes - a file named
ifsinf.zip). If it's not publically available, ask your local IBM rep for
a copy.
ΓòÉΓòÉΓòÉ 8.2. The build tree - How to build ΓòÉΓòÉΓòÉ
1. make a directory somewhere on your disk.
2. in that directory, unzip the file ext2_src.zip
3. in that directory, unzip the file mwdd_src.zip (included in 32drv130.zip
included in this package).
4. update the file <your directory>\32bits\ext2-os2\makefile.inc, according
to the table below.
5. open a DOS session, and in that session :
change the current directory to <your
directory>\32bits\ext2-os2\ext2flt
type 'nmake -f makefile.msc' to build ext2flt.flt.
6. exit from the DOS session
7. change the current directory to <your directory>\32bits\ext2-os2
8. type "nmake" to build the whole ext2-os2 package
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéEXT2OS2_BASE ΓöéThe root path of ext2-os2 (usually \ext2-os2)Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéDDKPATH ΓöéThe path where is installed your DDK (usuallyΓöé
Γöé Γöé\DDKX86 or \DDK) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéIFSTKTPATH ΓöéThe path where you put the "IFS toolkit" Γöé
Γöé Γöé(fsd.h, fsh.h and fshelper.lib) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéMSVCPATH ΓöéThe path where MS Visual C++ is installed Γöé
Γöé Γöé(usually \MSVC) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVACPATH ΓöéThe path where IBM Visualage C++ is installedΓöé
Γöé Γöé(usually \IBMCPP) Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
The build tree looks like :
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé.\ Γöécontains the main makefile an the files I Γöé
Γöé Γöécouldn't put elsewhere. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\vfs ΓöéLinux kernel services and VFS interfaces. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\ext2 ΓöéLinux ext2fs sources (from Γöé
Γöé Γöé/usr/src/linux-1.2.1/fs/ext2) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\include\os2 ΓöéOS/2 specific include files Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\include\linux ΓöéLinux include files Γöé
Γöé Γöé(/usr/src/linux-1.2.1/include/linux) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\include\asm ΓöéLinux include files Γöé
Γöé Γöé(/usr/src/linux-1.2.1/include/asm) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\console Γöéext2-os2.exe monitoring tool sources Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\doc ΓöéThe ext2-os2 documentation Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\distrib ΓöéThe directory in which is built the ZIP file.Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\vfsapi ΓöéThe VFSAPI library sources. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\ext2flt Γöécontains Deon van der Westhuysen's Γöé
Γöé Γöéext2flt.flt sources, patched to compile with Γöé
Γöé ΓöéMS Visual C++ as well as Borland C++. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\microfsd ΓöéThe ext2-os2 micro FSD (used to boot OS/2 Γöé
Γöé Γöéfrom a Linux partition) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\minifsd ΓöéThe ext2-os2 mini FSD (used to boot OS/2 fromΓöé
Γöé Γöéa Linux partition) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé.\uext2 ΓöéThe dummy uext2.dll library sources Γöé
Γöé Γöé(necessary to make BOOTOS2 happy) Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 9. The VFSAPI library ΓòÉΓòÉΓòÉ
The purpose of the VFSAPI library is to provide an extension of the standard
OS/2 standard file system oriented calls to access Linux VFS specific features
like I-nodes, UNIX file modes, file ownership and so on. For the moment the
library is quite limited, but with the time I'll include some more calls !
To be able to do what they are designed for, these routines talk directly to
the ext2-os2.ifs file system driver, through the DosFsCtl call. DosFsCtl
(almost) directly calls the IFS's FS_FSCTL entry point. Most of the work is
done in kernel mode inside ext2-os2.ifs. DosFsCtl is the IFS equivalent of
DosDevIOCtl : an extended interface to the IFS.
The library is compiled using IBM Visualage C++ 3.0, but it should also compile
without problem with emx/gcc. The precompiled vfsapi.dll should work with
emx/gcc (and other compilers) without recompilation.
The entry points follow the standard OS/2 32 bits API linkage convention
(_System for IBM Visualage C++, _syscall for Borland C++).
Note: The funtion names, as well as data structure names, have been prefixed
with "vfs_" in order to prevent name collisions with existing C/C++
runtime libraries.
vfs_fstat
vfs_stat
vfs_sync
ΓòÉΓòÉΓòÉ 9.1. vfs_fstat ΓòÉΓòÉΓòÉ
int vfs_fstat(int fd, struct new_stat *s);
This is the ext2-os2 implementation of the Unix fstat() system call. It returns
a "true" stat structure containing the "true" Unix file mode, the "true" file
ownership... This stat structure is the same as the Linux stat structure
defined in /usr/include/sys/stat.h. All the macros and definitions for file
modes and file ownership are also the same as in Linux.
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéParameter type ΓöéInput ΓöéDescription Γöé
Γöé ΓöéOutput Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéint fd Γöéinput Γöémust be a valid OS/2 file handle (for exampleΓöé
Γöé Γöé Γöéreturned by DosOpen, or DosDupHandle). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéstruct vfs_stat *s Γöéin/out ΓöéOn input : must point to a vfs_stat Γöé
Γöé Γöé Γöéstructure. On output : contains the I-node Γöé
Γöé Γöé Γöéinformation. Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 9.2. vfs_stat ΓòÉΓòÉΓòÉ
int vfs_stat(const char *pathname, struct new_stat *s);
This is the ext2-os2 implementation of the Unix stat() system call. It returns
a "true" stat structure containing the "true" Unix file mode, the "true" file
ownership... This stat structure is the same as the Linux stat structure
defined in /usr/include/sys/stat.h. All the macros and definitions for file
modes and file ownership are also the same as in Linux.
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéParameter type ΓöéInput ΓöéDescription Γöé
Γöé ΓöéOutput Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéconst char *pathnameΓöéinput ΓöéMust be a valid OS/2 file name (a file name Γöé
Γöé Γöé Γöéacceptable by DosOpen). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéstruct vfs_stat *s Γöéin/out ΓöéOn input : must point to a vfs_stat Γöé
Γöé Γöé Γöéstructure. On output : contains the I-node Γöé
Γöé Γöé Γöéinformation. Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 9.3. vfs_sync ΓòÉΓòÉΓòÉ
int vfs_sync(void);
This is the ext2-os2 implementation of the Unix sync() system call. It commits
all data to the disk.
Note: vfs_sync will ONLY work on ext2fs partitions, not on other partitions
(FAT, HPFS).
ΓòÉΓòÉΓòÉ 10. Booting OS/2 from a Linux ext2fs partition ΓòÉΓòÉΓòÉ
Note: This chapter does not yet apply to the 32 bits version. To boot OS/2
from a Linux partition you must use the 16 bits version of ext2-os2.
Now ext2-os2 allows OS/2 to boot from a Linux ext2fs partition. It can even
makes OS/2 reside alongside Linux on the same partition (I mean, having
vmlinuz and OS2KRNL on the same file system !).
Note: For the moment there are two main restrictions (these restrictions will
be removed when I implement swapper entry points, and EAS support ....
) :
1. You must still have a FAT or HPFS partition to store the swap file
2. You must still have a FAT or HPFS partitionto store the WPS desktop tree
(usually <boot drive>:\DESKTOP\*).
Anyway, it is not completely useless though : with this feature you can for
instance install an OS/2 maintenance partition on a Linux ext2fs drive, and
thus save a partition. You can also install a full OS/2 system, if you store
the desktop and the swap file on a FAT or HPFS partition.
The following chapters will describe how to setup an OS/2 system on a Linux
ext2fs partition. It's not an easy thing to do, because as you will see it's
like if we gathered on a single partition the usual problems encountered when
installing a Linux+OS/2 system !!
For the moment booting OS/2 from a Linux partition is still quite experimental
and is still at beta level stabiliy ! To try this feature, you'll have to be
very familiar with OS/2 installation, Linux installation, and LILO + OS/2 Boot
Manager configuration. Please make a full backup of your system first !
I'm waiting for your feedback on this new feature, both failures and success
stories !
1. Understanding the normal OS/2 HPFS boot sequence
2. Understanding the normal Linux ext2fs boot sequence
3. Understanding the ext2-os2 OS/2 ext2fs boot sequence
4. Installing and configuring OS/2 on a Linux ext2fs partition
ΓòÉΓòÉΓòÉ 10.1. Understanding the normal OS/2 HPFS boot sequence ΓòÉΓòÉΓòÉ
Assume you have an OS/2 system with Boot Manager installed. Here's a
simplified HPFS boot sequence :
1. Ctrl+Alt+Del or Power on gives control to the power-on-self-test (POST)
code. the POST code after hardware initializations issues an INT 19h.
2. INT 19h load the first sector of the first drive (the MBR), and executes
it. This code will load and execute the boot record of the active primary
partition.
3. This active partition is Boot Manager, it will present you a menu of
bootable systems.
4. When you select the OS/2 system, boot manager reads and executes the code
in the boot record of the selected partition.
5. This code is called a "black box". Its role is to load a micro IFS in
memory. This micro IFS is a real mode IFS with just enough brain to read
a few files.
6. When the micro IFS receives control, it loads the OS/2 loader (stored in
OS2LDR). It also loads a mini IFS : a mini IFS is a protect mode IFS with
limited read only capabilities, just a little bit more clever than a
micro IFS ! (The HPFS mini IFS is stored in OS2BOOT) It then passes
control to OS2LDR, along with the current state of memory.
7. OS2LDR then loads OS2KRNL from disk, applies required fixups, and gives
control to the kernel.
8. The kernel then loads the mini IFS from its memory image. The mini IFS is
used to load the base device drivers, then the normal device drivers and
IFSes, then the VDD drivers.
9. When the normal HPFS IFS is loaded, it replaces the mini IFS.
As you can see, the OS/2 kernel doesn't know anything about HPFS. It even
makes no assumption of booting off of disk.
ΓòÉΓòÉΓòÉ 10.2. Understanding the normal Linux ext2fs boot sequence ΓòÉΓòÉΓòÉ
Assume you have a Linux system with OS/2 Boot Manager installed as the main
boot loader, and LILO installed in the superblock of the Linux boot partition.
1. Ctrl+Alt+Del or Power on gives control to the power-on-self-test (POST)
code. the POST code after hardware initializations issues an INT 19h.
2. INT 19h load the first sector of the first drive (the MBR), and executes
it. This code will load and execute the boot record of the active primary
partition.
3. This active partition is Boot Manager, it will present you a menu of
bootable systems.
4. When you select the Linux system, boot manager reads and executes the
code in the boot record of the selected partition.
5. This code is actually the LILO first stage loader. its role is to load
the LILO second stage loader.
6. The LILO second stage loader loads the disk map of the boot image, then
using this map it loads the Linux kernel, as well as command line
parameters. It then gives control to the setup code stored at the
beginning of the Linux boot image.
7. The setup code then explores the hardware configuration, switches to
protect mode and passes control to the Linux kernel.
8. When the Linux kernel receives control, it executes its initialization
routines, and initializes the device drivers present in the boot image.
9. It then executes the init process.
The main difference here is that the Linux kernel does not load dynamically
the device drivers, and especially the ext2fs driver. They are all present in
the boot image. While it greatly simplifies the boot sequence (no mini IFS, no
micro IFS ...) it requires a reconmpilation whenever you want to add or remove
a driver.
When you run LILO to install a new kernel, it installs a map of the kernel
boot image, and a boot loader in the boot record. LILO's main advantage is to
be independant of the file system it uses, and even more : it knows absolutely
nothing about ext2fs, FAT and so on. It uses the disk map to load the boot
image. This is the reason why you must re-run LILO whenever you touch your
kernel file. LILO makes no assumption of booting a Linux kernel image : it can
load other systems as well : it loads the specified file in a well known place
in memory regardless of its type, and gives it control.
ΓòÉΓòÉΓòÉ 10.3. Understanding the ext2-os2 OS/2 ext2fs boot sequence ΓòÉΓòÉΓòÉ
ext2-os2 uses a mix of these two different sequences to boot OS/2 from a Linux
ext2fs partition. In this package there are two new files :
MICROFSD.FSD : the Linux ext2fs micro IFS
MINIFSD.FSD : the Linux ext2fs mini FSD
The main difference between the normal OS/2 boot sequence and the ext2-os2
boot sequence is that ext2-os2 uses LILO as the "black box" described above.
LILO is actually configured to load MICROFSD.FSD instead of a standard Linux
kernel boot image.
Note: LILO is required to boot OS/2 from a Linux partition. I tested it with
LILO 0.15 but it should also work with later versions.
The boot sequence will be (assuming you have OS/2 boot manager installed as
the main boot loader, and LILO in the superblock of the Linux partition) :
1. Ctrl+Alt+Del or Power on gives control to the power-on-self-test (POST)
code. the POST code after hardware initializations issues an INT 19h.
2. INT 19h load the first sector of the first drive (the MBR), and executes
it. This code will load and execute the boot record of the active primary
partition.
3. This active partition is Boot Manager, it will present you a menu of
bootable systems.
4. When you select the OS/2 system, boot manager reads and executes the code
in the boot record of the selected partition.
5. This code is actually the LILO first stage loader. its role is to load
the LILO second stage loader.
6. The LILO second stage loader loads the disk map of the boot image (which
is actually a map of MICROFSD.FSD), then using this map it loads the
micro FSD as well as as command line parameters. It then gives control to
the micro FSD.
7. When the micro IFS receives control, it loads the OS/2 loader (stored in
OS2LDR). It also loads the ext2fs mini IFS (MINIFSD.FSD). It then passes
control to OS2LDR, along with the current state of memory.
8. OS2LDR then loads OS2KRNL from disk, applies required fixups, and gives
control to the kernel.
9. The kernel then loads the mini IFS from its memory image. The mini IFS is
used to load the base device drivers, then the normal device drivers and
IFSes, then the VDD drivers.
10. When the normal ext2-os2 IFS is loaded, it replaces the mini IFS.
ΓòÉΓòÉΓòÉ 10.4. Installing and configuring OS/2 on a Linux ext2fs partition ΓòÉΓòÉΓòÉ
1. Sample initial situation
2. Copying OS/2 a Linux ext2fs partition
3. Copying the required ext2-os2 files on the ext2fs partition
4. Updating CONFIG.SYS
5. Configuring and running LILO to boot OS/2 from your ext2fs partition
6. Now time to reboot ...
ΓòÉΓòÉΓòÉ 10.4.1. Sample initial situation ΓòÉΓòÉΓòÉ
hard disk 1 (100 Mb IDE drive) :
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéOS/2 driveΓöéOS/2 BM ΓöéLinux ΓöéLinux ΓöéDescription Γöé
Γöéletter Γöéname Γöédevice Γöémount Γöé Γöé
Γöé Γöé Γöéname Γöépoint Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé/dev/hda2 Γöé ΓöéOS/2 boot manager partition Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéC: Γöétest Γöé/dev/hda3 Γöé/disk_c ΓöéLinux ext2fs test (type 0x07) partition Γöé
Γöé Γöé Γöé Γöé Γöé(ext2flt not used to mount it) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéF: Γöélinux Γöé/dev/hda1 Γöé/ ΓöéLinux ext2fs root (type 0x83) partition Γöé
Γöé Γöé Γöé Γöé Γöé(ext2flt used to mount it) Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
((See also linux and OS/2 fdisk output for drive 1)
hard disk 2 (1.2 Gb SCSI drive) :
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéOS/2 driveΓöéOS/2 BM ΓöéLinux ΓöéLinux ΓöéDescription Γöé
Γöéletter Γöéname Γöédevice Γöémount Γöé Γöé
Γöé Γöé Γöéname Γöépoint Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéD: ΓöéWARP Γöé/dev/sda1 Γöé Γöéprimary OS/2 HPFS with OS/2 WARP installed Γöé
Γöé Γöé Γöé Γöé Γöé(normal use) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéD: ΓöéEXT2-OS2 Γöé/dev/sda2 Γöé Γöéprimary OS/2 HPFS with OS/2 and kernel Γöé
Γöé Γöé Γöé Γöé Γöédebugger (to test ext2-os2) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéE: Γöé Γöé/dev/sda5 Γöé Γöéextended OS/2 HPFS data partition. Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
((See also linux and OS/2 fdisk output for drive 2)
LILO is installed in the superblock of /dev/hda1, and is configured to load
/vmlinuz from this partition. (lilo.conf used to configure LILO)
ΓòÉΓòÉΓòÉ 10.4.2. Copying OS/2 a Linux ext2fs partition ΓòÉΓòÉΓòÉ
To install OS/2, the easiest way will be to use the IBM EWS bootos2.zip package
(available on usual OS/2 ftp sites). This package can create a bootable system
from an existing installed system. It can install a system on either floppies
or hard disks. Moreover it can create a minimal system (single text mode
session), a PM enabled system, a WPS enabled system ...
Here's how I installed a PM enabled system on drive F:. To do this, I booted my
normal OS/2 system, went to the bootos2 directory and typed :
BOOTOS2 TARGET=F: TYPE=PM
Some important remarks:
you must have the two OS/2 installation disks handy, bootos2 will ask
them.
when BOOTOS2 asks if you want to format the target partition, you must
answer to skip format !!
UEXT2.DLL must be somewhere in you LIBPATH, otherwise bootos2 will abort.
Sometimes for some reason, bootos2 forgets to copy the hidden OS2DUMP
file in the root directory. Please ensure that it has been copied.
Note on how to install a WPS enabled system
ΓòÉΓòÉΓòÉ 10.4.3. Copying the required ext2-os2 files on the ext2fs partition ΓòÉΓòÉΓòÉ
Make a directory on the ext2fs partition to store ext2-os2 files (for instance
F:\os2\fs\ext2) and copy the following files in it :
ext2-os2.exe
ext2-os2.ifs
ext2-os2.sym
ext2_lw.exe
sync.exe
vfsapi.dll
uext2.dll
Copy the following files in F:\OS2 :
ext2flt.flt
ext2flt.sym
Copy the following files in F:\ :
microfsd.fsd
minifsd.fsd
ΓòÉΓòÉΓòÉ 10.4.4. Updating CONFIG.SYS ΓòÉΓòÉΓòÉ
Then add the following statements at the beginning of F:\CONFIG.SYS :
REM
REM this should be the beginning of CONFIG.SYS
REM
IFS=F:\OS2\FS\EXT2\EXT2-OS2.IFS -cache:256 -rw -case_retensive <add other options if necessary>
RUN=F:\OS2\FS\EXT2\EXT2_LW.EXE
BASEDEV=EXT2FLT.FLT /W <add other options if necessary>
SET EXT2_TZ=<put your time zone here>
Note:
the IFS managing the boot drive - in this case ext2-os2.ifs - must always
be the first statement in CONFIG.SYS, or OS/2 will crash during boot.
write access must be enabled or OS/2 will not work properly.
the -case_retensive option is necessary or OS/2 won't boot
Update the SWAPPATH line so that the SWAPPER.DAT file resides somewhere BUT
NOT ON A EXT2FS PARTITION !!! For instance in our sample case :
REM
REM D: is *NOT* a Linux ext2fs file system.
REM the two 2048 numbers are samples only, change them to values meeting your
REM requirements
REM
SWAPPATH=D:\TMP\SWAPPER.DAT 2048 2048
If necessary, update the MEMMAN statement as follows :
MEMMAN=SWAP,PROTECT
ΓòÉΓòÉΓòÉ 10.4.5. Configuring and running LILO to boot OS/2 from your ext2fs partition ΓòÉΓòÉΓòÉ
Now reboot under Linux. In this step we'll need to know several things :
the boot drive geometry (number of tracks, number of sectors per track).
You can know them in your drive's manual, or in your BIOS setup.
the boot partition geometry (starting sector, number of sectors). You can
know it using fdisk -l (list partitions)
the boot drive BIOS device code (first drive is 0x80, second is 0x81 ...)
Then edit the /etc/lilo.conf to add /microfsd.fsd as a new boot image :
#
# Start LILO global section
#
boot = /dev/hda1 # installs LILO in the superblock of /dev/hda1
vga = normal # force sane state
ramdisk = 0 # paranoia setting
prompt
#
# End LILO global section
#
# Linux bootable partition config begins
#
image = /vmlinuz # normal Linux kernel image
root = /dev/hda1
label = linux # name to enter at LILO prompt
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
#
# Linux bootable partition config ends
#
# OS/2 bootable partition config begins
#
image = /microfsd.fsd # ext2-os2 micro-fsd file (OS2LDR loader).
label = test_os2 # name to enter at LILO prompt
append = "os2_bios_device=0x80 os2_bootdrive=5 os2_hidden_sectors=0x19884 os2_sect=35 os2_head=6 os2_total_sectors=100800 os2_bytes_per_sector=512"
#
# OS/2 bootable partition config ends
#
In the "append=" we've passed mandatory informations to the ext2-os2 micro FSD
so that it can boot OS/2 properly. Below is a description of these parameters.
Note: All these parameters are required. A wrong value in one of them will
prevent OS/2 from booting normally.
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöéos2_bootdrive Γöéthis is the OS/2 drive letter of the boot Γöé
Γöé Γöédrive. It MUST REFLECT the drive letter as Γöé
Γöé Γöéseen in a normal situation (in our case F:). Γöé
Γöé ΓöéYou CANNOT REORDER drive letters with this Γöé
Γöé Γöéoption ; use ext2flt's /M option instead and Γöé
Γöé Γöéupdate this value accordingly. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéos2_bios_device Γöéthis is the physical drive BIOS device code. Γöé
Γöé ΓöéFloppy drives are 0 (A:) and 1 (:). Hard Γöé
Γöé Γöédrives are numbered starting at 0x80, so Γöé
Γöé Γöéphysical hard drive 1 is 0x80, drive 2 is Γöé
Γöé Γöé0x81. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéos2_hidden_sectors Γöéthis is sector number (512 bytes) of the Γöé
Γöé Γöéfirst sector of the boot partition. Use fdiskΓöé
Γöé Γöé-uS -l under Linux to know it. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéos2_total_sectors Γöéthis is the size of the boot partition in 512Γöé
Γöé Γöébytes sectors. Use fdisk -uS -l to know it. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéos2_sect Γöéthis is the number of sectors per track Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéos2_bytes_per_sectorΓöéthis is the hardware sector size in bytes Γöé
Γöé Γöé(normally 512 bytes). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéos2_head Γöéthis is the number of heads Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
Then run the map installer to update LILO configuration as follows :
lilo -v
ΓòÉΓòÉΓòÉ 10.4.6. Now time to reboot ... ΓòÉΓòÉΓòÉ
Now we can shutdown the system and reboot. Once in OS/2 boot manager menu,
select "linux". This will start LILO. Once LILO is up - it should prompt
"lilo:" at the top left corner of the screen - type "test_os2", then <ENTER>
then let's prey ! Here are some checkpoints :
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöéext2-os2 MICROFSD Γöémicrofsd.fsd has been successfuly loaded by Γöé
Γöébanner appears on ΓöéLILO, and has been successfuly started. Γöé
Γöétop of the screen Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéa little white box Γöéit means that microfsd.fsd has successfuly Γöé
Γöéfollowed by the wordΓöéloaded OS2LDR and minifsd.fsd, and that Γöé
Γöé"OS2" appears at theΓöéOS2LDR has been successfuly started. Γöé
Γöétop left corner of Γöé Γöé
Γöéthe screen. Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéthe OS/2 logo bitmapΓöéit means that OS2LDR has successfuly loaded Γöé
Γöéappears ΓöéOS2KRNL, successfuly started the kernel, thatΓöé
Γöé Γöémicrofsd.fsd's job is over, and that Γöé
Γöé Γöéminifsd.fsd's job is starting. From this Γöé
Γöé Γöépoint CONFIG.SYS base device drivers begin toΓöé
Γöé Γöébe loaded. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéthe normal ext2-os2 Γöéext2-os2.ifs has just been loaded. Γöé
Γöébanner appears. Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPM appears (if a PM ΓöéOS/2 boot process is successful ! Γöé
Γöésystem), or the OS/2Γöé Γöé
Γöécommand prompt Γöé Γöé
Γöéappears. Γöé Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
Note:
The boot process will be probably slightly longer than a normal boot.
This is absolutely normal.
You can press ALT+F2 when the little white box appears : it will make
OS/2 tell what driver it is currently loading.
You can hook an ASCII terminal on the COM2 port (for instance a PC with a
terminal emulator, and a null-modem cable), ext2-os2 will write debug
information on COM2 port during the boot process.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
This is an example where drive letters won't be changed when you toggle the
ext2fs partition ID from 0x83 to 0x7. ext2flt gives the same result without
having to alter the partition table.
Before
Physical Description Partition Drive Type Status
drive ID letter
1 Boot mgr 0a - - Startable
1 OS/2 07 C: Extended Bootable
1 Linux ext2fs 83 - Extended Bootable <=== We toggle it from 0x83 ...
If we toggle the ext2fs partition type
Physical Description Partition Drive Type Status
drive ID letter
1 Boot mgr 0a - - Startable
1 OS/2 07 C: Extended Bootable
1 Linux ext2fs 07 D: Extended Bootable <=== ... to 0x07
If we use ext2flt.flt
Physical Description Partition Drive Type Status
drive ID letter
1 Boot mgr 0a - - Startable
1 OS/2 07 C: Extended Bootable
1 Linux ext2fs 07 D: Extended
The pink partition is the one as shown by ext2flt.flt to OS/2.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
In this case, the OS/2 drive letter is changed from C: to D: when you change
the Linux partition ID. If you want to use the ext2 IFS driver you'll have to
use ext2flt.flt so that the ext2fs partition appears after the OS/2 partition.
Before
Physical Description Partition Drive Type Status
drive ID letter
1 Boot mgr 0a - - Startable
1 Linux ext2 83 - Primary Bootable <=== We toggle it from 0x83 ...
1 OS/2 System 07 C: Extended Bootable
If we toggle the partiton ID, the drive letters change :
Physical Description Partition Drive Type Status
drive ID letter
1 Boot mgr 0a - - Startable
1 Linux ext2 07 C: Primary Bootable <=== ... to 0x07
1 OS/2 System 07 D: Extended Bootable
The solution is to use ext2flt.flt :
Physical Description Partition Drive Type Status
drive ID letter
1 Boot mgr 0a - - Startable
1 OS/2 System 07 C: Extended Bootable
1 Linux ext2 07 D: Extended
The pink partition is the one as shown by ext2flt.flt to OS/2.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
In this case, you cannot use the ext2 IFS driver alone and you are a good
candidate for using ext2flt.flt. This is because only ONE primary partition can
be active. ext2flt.flt will make your ext2fs partition appear as an extended
volume located after your OS/2 partition.
Physical Description Partition Drive Type Status
drive ID letter
1 Boot mgr 0a - - Startable
1 Linux ext2 83 - Primary Bootable
1 OS/2 System 07 C: Primary (active) Bootable
If we use ext2flt.flt :
Physical Description Partition Drive Type Status
drive ID letter
1 Boot mgr 0a - - Startable
1 OS/2 System 07 C: Primary (active) Bootable
1 Linux ext2 07 D: extended
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
[-q] : quiet initialization of ext2-os2.ifs (no banner during boot). Default is
verbose initialization.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
[-cache:<max. disk cache size>] Specifies the MAXIMUM disk cache size. This
value is the maximum amount of physical memory ext2-os2.ifs can dynamically
allocate for disk cache buffers. The default value is 240 Kb. The minimum value
is 240Kb. The maximum value depends on system resources (free physical memory).
Note: Please read the chapter "Dynamic disk cache considerations"
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
[rw] : enable write access. Default is write disabled.
Note: If you use ext2flt, don't forget to enable write access on the
ext2flt.flt command line. (/W switch)
WARNING - DON'T FORGET TO BACKUP ALL YOUR DATA PRIOR TO ENABLE WRITE ACCESS
!!!
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
[-no_auto_fsck] : prevents ext2-os2 from forcing Linux to run e2fsck on
partitions "touched" by OS/2 Default is to force Linux to run e2fsck.
Note: Please read the chapter "Automatic check disk"
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
[-case_retensive] : makes ext2-os2.ifs behave like HPFS. If this option is set,
case will not be significant but will be retained within the file system. For
instance File and FILE are considered to be the same file. Default is case
sensitive.
WARNING - PLEASE READ "Case sensitivity considerations" BEFORE USING THIS
OPTION !!!
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
[-<IFS entry point to trace>] : traces a specific IFS entry point. Using this
option makes ext2-os2.ifs produce an output in ext2-os2.exe whenever the
specified IFS entry point is entered. You can specify several IFS entry points
to trace for instance "IFS=ext2-os2.ifs -FS_MKDIR -FS_RMDIR".
Note: Please notice that tracing will have a performance hit (can be
important).
Currently supported IFS entry points for tracing are :
FS_CLOSE
FS_COMMIT
FS_DELETE
FS_EXIT
FS_FILEINFO
FS_FINDCLOSE
FS_FINDFIRST
FS_IOCTL
FS_OPENCREATE
FS_PATHINFO
FS_PROCESSNAME
FS_READ
FS_WRITE
FS_CHDIR
FS_RMDIR
FS_MKDIR
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
[-no_strat2] : disable use of extended I/O operations (strategy 2 calls).
Default is to use them when they are supported by the block device driver.
Normally it works well with OS2DASD.DMD, but if you encounter problems with
extended I/O with other drivers, you can disable them.
Note: Using extended I/O results in HUGE performance improvements ; disabling
them with have a tremendous performance hit.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
[-errors=[panic|continue]] : specifies the behaviour to adopt when the ext2fs
file system code detects an error within the file system. "panic" halts the
system, "continue" makes ext2-os2 only output a message in ext2-os2.exe and
continue. Default is "panic" (unlike Linux, whose default is "continue").
Note: If a system halt occurs with a message beginning with "ext2-os2 detected
a file system error on drive %c", it means that the ext2fs file system
code found a file system corruption. You MUST run e2fsck from Linux to
repair your file system. This type of error is generally not specific to
ext2-os2, but the error would also have occured on Linux.
"-errors=continue" will avoid a system halt and just mark the file
system as bad (forcing e2fsck on next Linux boot) ; but if you continue
to work intensively after a file system error, you are likely to spread
the error and make things even worse.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
[-output=[com1|com2]] : Makes ext2-os2 write its messages on COM1 or COM2 port
in addition to the ext2-os2 monitor.
Note: Output to COM ports has a performance hit, but can be necessary for
tracing in some cases.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
[-tz:<time zone in minutes from UTC>] : Sets the time zone to be taken into
account for file dates and times. Please read Time zone considerations.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
/Q : Quiet install. Prevents the filter from displaying messages.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
/V : Verbose install. Displays some diagnostic messages.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
/W : Allows the virtual partitions to be written to.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
/A : Virtualize all partitions found. The only good reason to use this is along
with the /M option when you want to control the mounting order of all the
partitions. You must use the /W option if you use the /A option; otherwise OS/2
may crash when it tries to write to the partition.
Note: Using the /A option may change your drive letters causing the your
system to be unbootable. Use the /M option together with /A. (This may
change in the future.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
/M <mount list> : Mounts the partitions in the order specified in the mount
list, which should be a list of numbers separated by commas. The partitions are
numbered 0 on a first come basis. (Not the OS/2 uses.)
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
sync.exe does exactly what its Unix counterpart (sync) does : it commits all
buffered data to disks.
Invocation :
sync
Note: Please ensure that all ext2fs formatted removable media are in their
drives when you invoke sync.exe.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
IBM Visualage C++ version 3.0 for OS/2.
Note: The CSD CTC305 is highly recommended.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
IBM Assembly Language Processor (ALP) version 4.00.
Note: Earlier versions of ALP will NOT work.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
Microsoft Visual C++ 1.51.
Note: This is actually MSC version 8.0c and is available as the 16 bits
compiler in the MS Visual C++ 2.0 package.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
Borland C++ version 4
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
Microsoft Assembler (MASM) 5.10A.15
Note: This is the version of MASM included in the DevCon DDK.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
Borland Turbo Assembler (available with Borland C++ 4)
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
IBM Linker for OS/2 (ILink) version 1.
Note: This is the version of ILINK included in the IBM Visualage C++ package,
with CSD CTC305 installed (ILINK version 01.04.r1a_CTC305A).
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
Microsoft Linker (LINK) version 5.6.
Note: This is the version of LINK included in the Microsoft Visual C++ version
2.0 package.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
linux fdisk 3.04 output for disk 1 (this is actually an OS/2 port of fdisk :
1:1 means /dev/hda1 and so on) :
fdisk -uS -l 1:
Disk 1:: 6 heads, 35 sectors, 978 cylinders
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
1:1 2100 104579 102480 83 Linux native
1:2 * 35 2099 2065 a OS/2 Boot Manager or Coherent swap
1:3 104580 205379 100800 7 OS/2 IFS (e.g., HPFS) or NTFS or QNX2 or Advanced UNIX
1:4 0 - 0 0 Empty
OS/2 fdisk output for disk 1 :
FDISK /QUERY /DISK:1
Drive Name Partition Vtype FStype Status Start Size
1 : 1 0a 2 0 1
1 Linux : 1 83 1 1 50
1 test C: 1 07 5 51 49
**BIOS:1024MB
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
linux fdisk 3.04 output for disk 2 (this is actually an OS/2 port of fdisk :
1:1 means /dev/sda1 and so on) :
fdisk -uS -l 2:
Disk 2:: 64 heads, 32 sectors, 1169 cylinders
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
2:1 163840 2095103 1931264 7 OS/2 IFS (e.g., HPFS) or NTFS or QNX2 or Advanced UNIX
2:2 * 32 163839 163808 17 OS/2 BM: hidden IFS
2:3 2095104 2394111 299008 5 DOS Extended
2:4 0 - 0 0 Empty
2:5 * 2095136 2394111 298976 7 OS/2 IFS (e.g., HPFS) or NTFS or QNX2 or Advanced UNIX
OS/2 fdisk output for disk 2 :
FDISK /QUERY /DISK:2
Drive Name Partition Vtype FStype Status Start Size
2 ext2-os2 : 1 17 3 0 80
2 Warp D: 1 07 1 80 943
2 001ff820 E: 2 07 0 1023 146
**BIOS:1024MB
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
#
# Start LILO global section
#
boot = /dev/hda1 # install LILO in the superblock of /dev/hda1.
vga = normal # force sane state
ramdisk = 0 # paranoia setting
prompt
#
# End LILO global section
#
# Linux bootable partition config begins
image = /vmlinuz
root = /dev/hda1
label = linux
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
# Linux bootable partition config ends
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
Here's a brief description of what to do to install a WPS enabled system with
BOOTOS2 on a LInux ext2fs partition, and put the WPS desktop tree on a HPFS or
FAT partition (assume we want to store the WPS tree in D:\tmp\desktop) :
1. Go to the OS2 directory of your boot drive and make a copy of the file
named INI.RC (for instance TEST.RC)
2. Edit TEST.RC as follows :
Locate a line of the form
"PM_InstallObject" "Desktop;WPDesktop;?:\" "OBJECTID=<WP_DESKTOP>"
and replace it with
"PM_InstallObject" "Desktop;WPDesktop;D:\tmp\desktop" "OBJECTID=<WP_DESKTOP>"
Locate a line of the form
"PM_InstallObject" "Nowhere;WPFolder;?:\" "OBJECTID=<WP_NOWHERE>"
and replace it with
"PM_InstallObject" "Nowhere;WPFolder;D:\tmp\nowhere" "OBJECTID=<WP_NOWHERE>"
3. Reboot OS/2 FROM FLOPPIES
4. Press F3 to go to a command prompt. At the command prompt, go to the OS2
directory of your hard drive and type :
MAKEINI BOS2U300.INI TEST.RC
5. Reboot OS/2 normally
6. Go to your BOOTOS2 directory and replace BOS2U300.INI with the one we've
created.
7. To install a WPS enabled system type the following command :
BOOTOS2 TARGET=F TYPE=WPS